package org.java.common.exception;

import org.java.common.vo.ExceptionVo;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author WHQ
 * @version 1.0
 * @date 2022-1-27 0027 下午 4:25
 * shopping项目的全局处理异常类
 */
//标识当前是一个处理异常的控制器类
@ControllerAdvice
public class ShoppingExceptionHandler {
    /**
     * 哪一个模块需要用到这个异常处理，就把这个模块引入就行了
     * @param shoppingException
     * @return
     */
    //指定要捕获的异常
    @ExceptionHandler(value = ShoppingException.class)
    @ResponseBody
    public ResponseEntity<ExceptionVo> handleException(ShoppingException shoppingException){
        System.out.println("进入异常处理类");
        //下面的状态码以及错误信息都是从自定义的异常中的枚举参数取出来的，我们的状态码错误信息都在枚举中
        return ResponseEntity.status(shoppingException.getShoppingEnum().getCode()).body(new ExceptionVo(shoppingException.getShoppingEnum()));
    }
}
